<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>模块模式</title>
	</head>
	<body>
	</body>
	<script>
	//单例
	/*	var box ={ //字面量对象，也是单例对象（只会实例化一次）
			age:100, //这是公有属性，
			run:function(){  //这是公有函数
				return '运行中..'
			}
		}*/
		
		//使用字面量的对象声明的方式
		var box = function(){
			var user  ='lee';//私有变量
			function run(){   //私有函数
				return '运行中....';
			}
			return{
				publicGo:function(){  //对外公共接口的特全方法
					return user+','+run();
				}
			};
		}();
		alert(box.publicGo());//lee,运行中....
		
		
		//修改格式
		/*	var box = function(){
			var user  ='lee';//私有变量
			function run(){   //私有函数
				return '运行中....';
			}
			var obj ={
				publicGo:function(){  //对外公共接口的特全方法
					return user+','+run();
				}
			};
			return obj;
		}();
		alert(box.publicGo());//lee,运行中....
		*/
		
		//增强的模块模式：这种模式适合返回自定义对象，也就是构造函数。
		//之前的都是返回{}也就是Object
		
		function Desk(){};
		
		var mybox =function(){
			var user ='lee';//私有变量
			function run(){  //私有函数
				return '运行中...';
			}
			var desk = new Desk();
			desk.publicGodk=function(){
				return user+',desk:'+run();
			};
			return desk;
		}();
		alert(mybox.publicGodk());//lee,desk:运行中...
		
	</script>
</html>
